home *** CD-ROM | disk | FTP | other *** search
- #ifndef _RPCDC_INCLUDED
-
- #define _RPCDC_INCLUDED
-
- #ifdef WIN32
- #include <windows.h>
- #else
- #include <sys/socket.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <netdb.h>
- #define SOCKET int
- #endif
- #include <stdlib.h>
-
- #include <xdr_buf.h>
- #include <rpc_msg.h>
-
- typedef struct _REG_INFO {
-
- char *ID;
- unsigned long Key1;
- unsigned long Key2;
-
- } _REG_INFO;
-
- //------------------------------------------------------------------
- // New functions added recently
- //------------------------------------------------------------------
- int _rpc_gethostname (char *hostname,
- int maxlen,
- char *ipaddr);
-
- //------------------------------------------------------------------
- // Old functions
- //------------------------------------------------------------------
- size_t _rpcsend_buffer (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- void *Buffer,
- size_t (*xdr_func)(void *, void *, int));
-
- //------------------------------------------------------------------
- size_t _rpcrecv_buffer (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- void *Buffer,
- size_t (*xdr_func)(void *, void *, int));
-
- //------------------------------------------------------------------
- size_t _rpcsend_buffer (SOCKET Socket,
- RPC_MSG *rpc_msg,
- char *Buffer,
- size_t Len);
-
- //------------------------------------------------------------------
- size_t _rpcrecv_buffer (SOCKET Socket,
- char *Buffer,
- size_t Len);
-
- //------------------------------------------------------------------
- int _rpc_flush (SOCKET Socket,
- RPC_MSG *rpc_msg);
-
- //------------------------------------------------------------------
- int _rpcsend_int (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- int I);
-
- //------------------------------------------------------------------
- int _rpcrecv_int (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- int *I);
-
- //------------------------------------------------------------------
- int _rpcsend_uint (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- unsigned int I);
-
- //------------------------------------------------------------------
- int _rpcrecv_uint (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- unsigned int *I);
-
- //------------------------------------------------------------------
- int _rpcsend_long (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- long I);
-
- //------------------------------------------------------------------
- int _rpcrecv_long (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- long *I);
-
- //------------------------------------------------------------------
- int _rpcsend_short (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- short I);
-
- //------------------------------------------------------------------
- int _rpcrecv_short (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- short *I);
-
- //------------------------------------------------------------------
- int _rpcsend_char (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- char C);
-
- //------------------------------------------------------------------
- int _rpcrecv_char (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- char *C);
-
- //------------------------------------------------------------------
- int _rpcsend_string (SOCKET Socket,
- RPC_MSG *rpc_msg,
- char *S,
- size_t SLen);
-
- //------------------------------------------------------------------
- int _rpcrecv_string (SOCKET Socket,
- char *S,
- size_t SLen);
-
- //------------------------------------------------------------------
- int _rpcsend_float (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- float X);
-
- //------------------------------------------------------------------
- int _rpcrecv_float (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- float *X);
-
- //------------------------------------------------------------------
- int _rpcsend_double (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer,
- double X);
-
- //------------------------------------------------------------------
- int _rpcrecv_double (SOCKET Socket,
- XDR_BUFFER *xdr_buffer,
- double *X);
-
- //------------------------------------------------------------------
- int _rpcsend_tabfloat (SOCKET Socket,
- RPC_MSG *rpc_msg,
- float *X,
- long int N,
- int RestoreData);
-
- //------------------------------------------------------------------
- int _rpcrecv_tabfloat (SOCKET Socket,
- float *X,
- long int N);
-
- //------------------------------------------------------------------
- int _rpcsend_tabdouble (SOCKET Socket,
- RPC_MSG *rpc_msg,
- double *X,
- long int N,
- int RestoreData);
-
- //------------------------------------------------------------------
- int _rpcrecv_tabdouble (SOCKET Socket,
- double *X,
- long int N);
-
- //------------------------------------------------------------------
- #define rpcrecv_ulong(S,X,I) rpcrecv_long(S,X,(long *)I)
- #define rpcsend_ulong(S,R,X,I) rpcsend_long(S,R,X,(long)I)
- #define rpcrecv_ushort(S,X,I) rpcrecv_short(S,X,(short *)I)
- #define rpcsend_ushort(S,R,X,I) rpcsend_short(S,R,X,(short)I)
- #define rpcrecv_bool rpcrecv_int
- #define rpcsend_bool rpcsend_int
-
- //------------------------------------------------------------------
- void _ServerMainLoop (_REG_INFO *RegInfo);
-
- //------------------------------------------------------------------
- int _StartServerDaemon (char *service,
- int max_timeout,
- char *logfile,
- size_t bufsize,
- void (*Constructor)(void *),
- void (*Destructor)(void *),
- void (*Dispatch)(int,int),
- int (*AcceptConnection)(char *),
- void (*udpManager)(SOCKET),
- _REG_INFO *RegInfo,
- SOCKET *tcpSocket,
- SOCKET *udpSocket);
-
- //------------------------------------------------------------------
- void _StopServerDaemon (SOCKET tcpSocket,
- SOCKET udpSocket);
-
- //------------------------------------------------------------------
- int _GetClientInfo (int idClient,
- SOCKET *socket,
- RPC_MSG **rpc_msg,
- XDR_BUFFER **xdr_buffer,
- char **client_buffer);
-
- //------------------------------------------------------------------
- void _GetErrMsg (char *msg);
-
- //------------------------------------------------------------------
- SOCKET _StartTCPClient (char *servername,
- char *service,
- int max_timeout,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer);
-
- //------------------------------------------------------------------
- SOCKET _StartUDPClient (char *service,
- int max_timeout,
- sockaddr_in *bcast_addr);
-
- //------------------------------------------------------------------
- int _StopTCPClient (SOCKET Socket,
- RPC_MSG *rpc_msg,
- XDR_BUFFER *xdr_buffer);
-
- //------------------------------------------------------------------
- void _StopUDPClient (SOCKET Socket);
-
- //------------------------------------------------------------------
- int _socket_ready_w (SOCKET Socket,
- struct timeval *timeout);
-
- //------------------------------------------------------------------
- int _socket_ready_r (SOCKET Socket,
- struct timeval *timeout);
-
- //------------------------------------------------------------------
- size_t _xdr_int (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- size_t _xdr_uint (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- size_t _xdr_short (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- size_t _xdr_long (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- size_t _xdr_float (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- size_t _xdr_double (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- size_t _xdr_char (void *h,
- void *n,
- int code);
-
- //------------------------------------------------------------------
- #define XDR_ENCODE 1
- #define XDR_DECODE 2
- #define XDR_MEMORY 3
-
- #endif
-
-